// 模块导入
import { UserService } from "../../services/users.service";
import { Request, Response } from "express";
import jsonwebtoken from 'jsonwebtoken';
// Token 加密所使用的密钥
const tokenKey = 'qwer1234';
// 定义控制器类
export class Controller {
    // 登录方法
    static login(req: Request, res: Response): void {
        // 获取客户端请求携带的用户名和密码
        let username = req.body.username;
        let password = req.body.password;
        // 验证数据是否为空
        if (username && password) {
            // 调用服务类进行登录操作
            UserService.login(username, password).then(data => {
                // 登录成功后，生成Token，和用户信息一起返回给客户端
                let token = jsonwebtoken.sign({
                    role: data.role,
                    id: data.id
                }, tokenKey, {
                    expiresIn: 3600
                });
                res.json({
                    msg: 'ok',
                    info: data,
                    token,
                });
            }).catch(error => {
                res.json({
                    error,
                    msg: 'error'
                });
            });
        } else {
            res.json({
                error: '请输入正确的用户名和密码',
                msg: 'error'
            });
        }
    }
    //注册方法
    static signUp(req: Request, resp: Response): void {
        // 获取注册时的用户信息
        let username = req.body.username;
        let password = req.body.password;
        let role = req.body.role;
        // 对信息有效性进行简单验证
        if (username && password && role && ['admin', 'normal'].includes(role)) {
            // 进行注册
            UserService.signUp(username, password, role).then(() => {
                resp.json({
                    msg: 'ok'
                });
            }).catch(error => {
                resp.json({
                    error,
                    msg: 'error'
                });
            });
        } else {
            resp.json({
                error: '请输入正确的用户信息',
                msg: 'error'
            });
        }
    }
}
